package cn.iocoder.yudao.module.dine.desk.pojo.vo;

import cn.iocoder.yudao.framework.business.basic.annotation.AdminJsonView;
import cn.iocoder.yudao.framework.business.basic.annotation.AppJsonView;
import cn.iocoder.yudao.framework.business.basic.pojo.vo.BaseVO;
import cn.iocoder.yudao.framework.validation.InEnumValue;
import cn.iocoder.yudao.module.api.shop.desk.enums.DeskOrderStatusEnum;
import cn.iocoder.yudao.module.api.shop.desk.enums.DeskStatusEnum;
import cn.iocoder.yudao.module.api.shop.info.dto.ShopInfoDTO;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonView;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * 视图对象
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/04/11
 */
@Data
public class DeskVO extends BaseVO {

    @Schema(description = "分类编号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Long categoryId;

    @Schema(description = "店铺编号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Long shopId;

    @Schema(description = "店铺信息")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private ShopInfoDTO shop;

    @Schema(description = "餐桌号，如D01")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String no;

    @Schema(description = "图片")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String picUrl;

    @Schema(description = "状态：0-空闲中、1-占用中")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    @InEnumValue(DeskStatusEnum.class)
    private Integer status;

    @Schema(description = "上次下单单号")
    @JsonView({AdminJsonView.class})
    private String lastOrderNo;

    @Schema(description = "上次下单状态：-1-无、0-就餐中、1-已出单、2-已完成")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    @InEnumValue(DeskOrderStatusEnum.class)
    private Integer lastOrderStatus;

    @Schema(description = "上次下单时间")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private LocalDateTime lastOrderTime;

    @Schema(description = "累计下单数量")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer totalOrderCount;

    @Schema(description = "累计消费金额")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer totalPayPrice;

    @Schema(description = "点餐码")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String qrcode;

}
